package com.mochasoft.shangchm.analyzer;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

public class SameTailAnalyzer implements Analyzer {

	public boolean isBad(TreeSet group) {
		Set tempSet = (TreeSet)group.clone();
		int size = getSize(tempSet);
		if(size==1||size==2){
			System.out.println("重尾数: "+size);
			return false;
		}else{
			return true;
		}
	}
	private int getSize(Set group){
		int size= 0;
		for (Iterator iter = group.iterator(); iter.hasNext();) {
			List list =getSameTailNumbers((Integer) iter.next());
			for (Iterator iterator = list.iterator(); iterator.hasNext();) {
				Integer temp = (Integer)iterator.next();
				if(group.contains(temp)){
					//System.out.println("temp="+temp);
					size++;
				}
			}
		}
		return size;
	}
	
	private List getSameTailNumbers(int i) {
		List list = new ArrayList();
		if (i <= 10) {
			if (i <= 3) {
				list.add(new Integer(10 + i));
				list.add(new Integer(20 + i));
				list.add(new Integer(30 + i));
			} else {
				list.add(new Integer(10 + i));
				list.add(new Integer(20 + i));
			}
		} else if (i <= 20 && i > 10) {
			if (i <= 13) {
				list.add(new Integer(i - 10));
				list.add(new Integer(i + 10));
				list.add(new Integer(i + 20));
			} else {
				list.add(new Integer(i - 10));
				list.add(new Integer(i + 10));
			}
		} else if (i <= 30 && i > 20) {
			if (i <= 23) {
				list.add(new Integer(i - 20));
				list.add(new Integer(i - 10));
				list.add(new Integer(i + 10));	
			} else {
				list.add(new Integer(i - 10));
				list.add(new Integer(i - 20));
			}
		} else if (i <= 33 && i >= 31) {
			list.add(new Integer(i - 10));
			list.add(new Integer(i - 20));
			list.add(new Integer(i - 30));
		}

		return list;
	}
}
